package com.ctsi.framework.mybatis.dialect;

import java.sql.PreparedStatement;
import java.sql.SQLException;


/**
 * SQLServer2005 方言实现
 * 
 * @author zhangjw
 */
public class Ms05Dialect extends AbstractMiDialect {
 



	@Override
	public void setLimitParamters(PreparedStatement ps, int parameterSize, int offset, int limit) throws SQLException {
		if (offset >= 0) {
			ps.setInt(parameterSize + 1, offset);
			ps.setInt(parameterSize + 2, limit + offset);
		}

	}
	
//	public static final Pattern OrderBy_PATTERN = Pattern.compile("\\b(order\\s{0,}by\\s)", Pattern.CASE_INSENSITIVE);
//
//	static int getFOrderByPos(String sql){
//		Matcher m=OrderBy_PATTERN.matcher(sql);
//		boolean f=m.find();
//		if(f){
//			return m.start();
//		}
//		return -1;
//	}
	
	@Override
	public String getLimitString(String sql, int offset) {
//		int orderPos = getFOrderByPos(sql);
//		
//		if (orderPos < 0) {
//			log.warn("sql :{} no ORDER BY",sql);
//		}
		if(offset >= 0){
			return sql.concat("  offset ? ROWS FETCH NEXT ? ROWS ONLY");
		}else{
			return sql;
		}
	}

	@Override
	public boolean supportsLimitOffset() {

		return true;
	}

}